package com.secsys.service;

import java.util.Date;
import java.util.HashMap;
import java.util.List;

import com.secsys.dto.StoFinanceperstockDTO;
import com.secsys.model.TbStoFinanceperstock;
import com.secsys.model.TbStoStock;

public interface StoFinancePerStockService extends Service<TbStoFinanceperstock, Integer> {

	/**
	 * 根据股票代码查找查找StoFinanceperstockDTO（每股指标）对象数组
	 * @param stockCode
	 * 			股票代码，TbStoStockDTO的stockCode
	 * @return
	 * 			List<StoFinanceperstockDTO>对象数组
	 */
	public List<StoFinanceperstockDTO> queryStoFinancePerStockByStockCode(String stockCode);
	
	/**
	 * 根据“基本信息对象”tbStoStock查找StoFinanceperstockDTO（每股指标）对象数组
	 * @param tbStoStock
	 * 			股票基本信息POJO对象，TbStoStockDTO对象
	 * @return
	 * 			List<StoFinanceperstockDTO>（每股指标）对象数组
	 */
	public List<StoFinanceperstockDTO> queryStoFinancePerStockByTbStoStock(TbStoStock tbStoStock);
	
	/**
	 * 根据日期date，查找某日所有股票的StoFinanceperstockDTO（每股指标）对象数组
	 * @param	fieldDate
	 * 			待查询的某天时间，如：1999-11-24
	 * @return
	 * 			StoFinanceperstockDTO（每股指标）对象数组
	 */
	public List<StoFinanceperstockDTO> queryStoFinancePerStockByDate(Date fieldDate);
	
	/**
	 * 根据股票代码stockCode和日期date，查找某日某股的StoFinanceperstockDTO（每股指标）对象数组
	 * @param 	stockCode
	 * 			股票代码，TbStoStockDTO的stockCode
	 * @param	fieldDate
	 * 			待查询的某天时间，如：1999-11-24
	 * @return
	 * 			StoFinanceperstockDTO（每股指标）对象数组
	 */
	public List<StoFinanceperstockDTO> queryStoFinancePerStockByTbStoStockCodeAndDate(int stockCode,Date fieldDate);
	
	/**
	 * 根据“基本信息对象”tbStoStock和日期date，查找某日某股的StoFinanceperstockDTO（每股指标）对象数组
	 * @param tbStoStock
	 * 			股票基本信息POJO对象，TbStoStockDTO对象
	 * @param	fieldDate
	 * 			待查询的某天时间，如：1999-11-24
	 * @return
	 * 			StoFinanceperstockDTO（每股指标）对象数组
	 */
	public List<StoFinanceperstockDTO> queryStoFinancePerStockByTbStoStockAndDate(TbStoStock tbStoStock,Date fieldDate);
	
	/**
	 * @description
	 * 			财务分析之，"每股净资产"NetAsset按时间范围的搜索；
	 * 			按照给定的起始年月和结束日期，以及上升、下降百分比进行搜索,返回搜索总记录数目
	 * @param startDate开始时间
	 * @param endDate结束时间
	 * @param num上升、下降的百分比
	 * @param updown上升还是下降的类型，1为上升、0为下降
	 * @return
	 */
	public int countSearchWithNetAsset(Date startDate,Date endDate,double num,int updown);
	
	/**
	 * @description
	 * 			财务分析之，“净资产收益率”（每股收益/每股净资产）NetIncome按时间范围的搜索；
	 * 			按照给定的起始年月和结束日期，以及上升、下降百分比进行搜索,返回搜索总记录数目
	 * @param startDate开始时间
	 * @param endDate结束时间
	 * @param num上升、下降的百分比
	 * @param updown上升还是下降的类型，1为上升、0为下降
	 * @return
	 */
	public int countSearchWithNetIncome(Date startDate,Date endDate,double num,int updown);
	
	/**
	 * @description
	 * 			财务分析之，"每股净资产"NetAsset按时间范围的搜索；
	 * 			按照给定的起始年月和结束日期，以及上升、下降百分比进行搜索，返回搜索的记录集合List
	 * @param startDate开始时间
	 * @param endDate结束时间
	 * @param num上升、下降的百分比
	 * @param updown上升还是下降的类型，1为上升、0为下降
	 * @return
	 */
	public HashMap<String, List> querySearchWithNetAsset(Date startDate,Date endDate,double num,int updown,int offset,int count);
	
	/**
	 * @description
	 * 		财务分析之，“净资产收益率”（每股收益/每股净资产）NetIncome按时间范围的搜索；
	 * 		按照给定的起始年月和结束日期，以及上升、下降百分比进行搜索，返回搜索的记录集合HashMap<String, List>
	 * @param startDate开始时间
	 * @param endDate结束时间
	 * @param num上升、下降的百分比
	 * @param updown上升还是下降的类型，1为上升、0为下降
	 * @return
	 */
	public HashMap<String, List> querySearchWithNetIncome(Date startDate,Date endDate,double num,int updown,int offset,int count);
	
}
